[Immuta] グローバルサブスクリプションポリシー詳解
大阪オフィスの玉井です。
Immutaのサブスクリプションポリシーですが、細かい設定を見ていくと、ちょっと詰まるところもあったりしたので、しっかりと調査することにしました。
サブスクリプションポリシーとは
「そのデータソースをどのユーザーに見せるか」を決定します。
条件に該当したユーザーに対してのみ、そのデータソースを見せるようにできます。見せる/見せないのイメージですが、ポリシーのルールに該当しないユーザーは、そのデータソースが画面に一切出てきません。つまり、そのデータソースの存在自体に気づかなくなります。
ユーザーにデータを見せることを、Immutaでは「サブスクライブする」と呼称します。
グローバルサブスクリプションポリシーとは
「グローバル」というのは、Immuta全体を指します。つまり、Immuta全体に適用されるサブスクリプションポリシーが、グローバルサブスクリプションポリシーです。
対して、ローカルサブスクリプションポリシーというのもありますが、これは特定のデータソースに対してのみ設定できるサブスクリプションポリシーです。
興味があれば、下記もどうぞ。
設定解説
ここからは、グローバルサブスクリプションポリシーで具体的に設定できる項目を解説してきます。
What is the name of this policy?
これは簡単。ポリシーの名前を決めてください。
How should this policy grant access?
「このポリシーはどのような方法でアクセスを許可しますか?」
上述の通り、グローバルサブスクリプションポリシーとは、データそのものに対するアクセスのON/OFFを決定します。この設定では、どういう形式でON/OFFを行うか、を決めます。
Allow Anyone
「誰でも許可」ということで、全ユーザーにデータソースへのアクセスを許可します。
Require users to take action to subscribeというチェックボックスをONにすると、自動でサブスクリプションされなくなります。つまり、アクセスは許可するが、そのデータソースを見ようとした場合、ユーザーが手動で任意のデータソースに対してサブスクリプションの操作を行うことになります。
Allow anyone who asks (and is approved)
誰でもアクセス許可にはなるものの、別途承認者を設ける形になります。
ユーザーがアクセスしたいと思った時(サブスクリプションしようとした時)、別途承認者が承認しない限り、そのユーザーはデータソースにアクセスすることはできません。
追加の設定でWho is required to approve requests?があります。文章の通り、承認者をここで決めます。特定の権限を持っているユーザーを指定することができます。
ちなみに、承認者の設定で/an individual selected by user/を選ぶと、ユーザーがそのデータソースへのアクセスをリクエストした際、承認者をユーザーが選ばないといけなくなる形になります。
Allow users with specific groups/attributes
特定のグループ(に所属しているユーザー)や、特定のAttribute(の値)を持っているユーザーだけにアクセスを許可します。一番イメージしやすいルールだと思います。
Individually Selected Users
アクセスを許可したいユーザーを完全手動で選びます。
ここで選ぶユーザーは静的(動的に変わらない)です。何か要件が変われば、都度変更しないといけないので、かなり特殊なユースケースの時じゃないと選ばない気がします。
追加のWho should be allowed to subscribe?という設定で、アクセスを許可するユーザーの条件を設定します。
最初の設定で「Create using Advanced DSL」を選ぶと、Web UIではなく、独自の言語でポリシーを記述することができます。
Web UIで設定する場合は、画面そのままで、許可するグループだとかAttributeだとかを設定します。
その他の設定については以下の通りです。
- Allow Data Source Discovery
- 条件に該当しなくても、そのデータソース自体の表示は許可します(存在がわかる)。
- Require Manual Subscription
- 条件に該当していても、サブスクリプションはユーザー側が手動で行う必要があります(Allow Anyoneの時のチェックボックスと同じ)。
- Request Approval to Access
- 条件に該当しなくても、アクセスのリクエストを行うことができるようになります。
- この設定をONにする場合、リクエストが来た時の承認者を決める必要があります。
最後に Should this policy always be required or share responsibility?という設定が出てきます。これは、そのデータソースに複数のグローバルサブスクリプションポリシーが重なって設定されていた場合の挙動を決めます。
Always Requiredにすると、被っているグローバルサブスクリプションポリシーの条件も全て満たす必要があります(AND条件)。Share Responsibilityにすると、最低1つのグローバルサブスクリプションポリシーが満たされていればOKです(OR条件)
Where should this policy be applied?
「このポリシーを適用する場所は?」
基本的には「このポリシーを適用するデータを決める設定」と思って下さい。
On all data sources
(Immutaに登録されている)全てのデータソースを対象とします。
On data sources
対象となるデータソースの条件を設定します。特定のタグがついたデータソース、特定のスキーマ下のテーブル、作成された日時等で、対象となるデータソースの条件を設定することができます。
When selected by data owners
これは、この場で対象データを決めるのではなく、データオーナー(権限を持つユーザー)が、自分が管轄しているデータソースに対して、個別に割り当てる形式です。ですので、この形式の場合、ポリシーのステージングはできません(データオーナーが個別に選ぶので、ステージングという概念が無い)。
オーナーとなっているユーザーが、下記のようにサブスクリプションポリシーを個別に指定することができます。
おわりに
新しいユーザーやデータが登録されても、自動で反映されるように、なるべく動的に動くルールにするのがコツです。そうすると、これ以上色々と設定をすることなく、データガバナンスを(半自動的に)効かせ続けることができます。